| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- using ExternPropertyAttributes;
 
- using UnityEngine;
 
- using UnityEngine.Rendering.Universal;
 
- namespace FlatKit {
 
- public class FlatKitPixelation : ScriptableRendererFeature {
 
-     [Expandable]
 
-     [Tooltip("To create new settings use 'Create > FlatKit > Pixelation Settings'.")]
 
-     public PixelationSettings settings;
 
-     private Material _effectMaterial;
 
-     private DustyroomRenderPass _fullScreenPass;
 
-     private bool _requiresColor;
 
-     private bool _injectedBeforeTransparents;
 
-     private ScriptableRenderPassInput _requirements = ScriptableRenderPassInput.Color;
 
-     private const string ShaderName = "Hidden/FlatKit/PixelationWrap";
 
-     private static int pixelSizeProperty => Shader.PropertyToID("_PixelSize");
 
-     public override void Create() {
 
-         // Settings.
 
-         {
 
-             if (settings == null) return;
 
-             settings.onSettingsChanged = null;
 
-             settings.onReset = null;
 
-             settings.onSettingsChanged += SetMaterialProperties;
 
-             settings.onReset += SetMaterialProperties;
 
-         }
 
-         // Material.
 
-         {
 
- #if UNITY_EDITOR
 
-             settings.effectMaterial = SubAssetMaterial.GetOrCreate(settings, ShaderName);
 
-             if (settings.effectMaterial == null) return;
 
- #endif
 
-             _effectMaterial = settings.effectMaterial;
 
-             SetMaterialProperties();
 
-         }
 
-         {
 
-             _fullScreenPass = new DustyroomRenderPass {
 
-                 renderPassEvent = settings.renderEvent,
 
-             };
 
-             _requirements = ScriptableRenderPassInput.Color;
 
-             ScriptableRenderPassInput modifiedRequirements = _requirements;
 
-             _requiresColor = (_requirements & ScriptableRenderPassInput.Color) != 0;
 
-             _injectedBeforeTransparents = settings.renderEvent <= RenderPassEvent.BeforeRenderingTransparents;
 
-             if (_requiresColor && !_injectedBeforeTransparents) {
 
-                 modifiedRequirements ^= ScriptableRenderPassInput.Color;
 
-             }
 
-             _fullScreenPass.ConfigureInput(modifiedRequirements);
 
-         }
 
-     }
 
-     public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) {
 
-         if (settings == null || !settings.applyInSceneView && renderingData.cameraData.isSceneViewCamera) return;
 
-         if (renderingData.cameraData.isPreviewCamera) return;
 
-         if (_effectMaterial == null) return;
 
-         _fullScreenPass.Setup(_effectMaterial, _requiresColor, _injectedBeforeTransparents, "Flat Kit Pixelation",
 
-             renderingData);
 
-         renderer.EnqueuePass(_fullScreenPass);
 
-     }
 
-     protected override void Dispose(bool disposing) {
 
-         _fullScreenPass?.Dispose();
 
-     }
 
-     private void SetMaterialProperties() {
 
-         if (_effectMaterial == null) return;
 
-         var pixelSize = Mathf.Max(1f / settings.resolution, 0.0001f);
 
-         _effectMaterial.SetFloat(pixelSizeProperty, pixelSize);
 
-     }
 
- }
 
- }
 
 
  |